
'''
    作者：fred
    功能：可接收一个或多个数并计算乘积：
    version:1.0
    日期：11/03/2018

函数的参数：
	顺序：必选参数、默认参数、可变参数、命名关键字参数和关键字参数
	位置参数：
	默认参数：
	可变参数： *nums。可变参数允许你传入0个或任意个参数，这些可变参数在函数调用时自动组装为一个tuple
	关键字参数：关键字参数允许你传入0个或任意个含参数名的参数，这些关键字参数在函数内部自动组装为一个dict
	命名关键字参数：需要一个特殊分隔符*，*后面的参数被视为命名关键字参数
'''

def product(m,*args):
    accuulate = m;
    for arg in args:
        accuulate = accuulate * arg
    return accuulate



# 测试
print('product(5) =', product(5))
print('product(5, 6) =', product(5, 6))
print('product(5, 6, 7) =', product(5, 6, 7))
print('product(5, 6, 7, 9) =', product(5, 6, 7, 9))

if product(5) != 5:
    print('测试失败!')
elif product(5, 6) != 30:
    print('测试失败!')
elif product(5, 6, 7) != 210:
    print('测试失败!')
elif product(5, 6, 7, 9) != 1890:
    print('测试失败!')
else:
    try:
        product()
        print('测试失败!')
    except TypeError:
        print('测试成功!')